package com.ahora.org.ejb.facade.impl;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import com.ahora.org.ejb.dao.interfaces.ProcesoDAO;
import com.ahora.org.ejb.facade.interfaces.ProcesoFacade;
import com.ahora.org.ejb.jpa.beans.AreaDTO;
import com.ahora.org.ejb.jpa.beans.HistorialExpedientesDTO;
import com.ahora.org.ejb.jpa.beans.HojaRutaDTO;
import com.ahora.org.ejb.jpa.beans.ProcesoDTO;
import com.ahora.org.ejb.jpa.beans.RequisitoProcesosDTO;
import com.ahora.org.ejb.jpa.entities.ApeRecProceso;
import com.ahora.org.ejb.jpa.entities.Area;
import com.ahora.org.ejb.jpa.entities.DetalleProcesoRequisitos;
import com.ahora.org.ejb.jpa.entities.FlujoProceso;
import com.ahora.org.ejb.jpa.entities.Persona;
import com.ahora.org.ejb.jpa.entities.Proceso;
import com.ahora.org.ejb.jpa.entities.Requisitos;
import com.ahora.org.ejb.jpa.entities.Usuario;

@Stateless
public class ProcesoFacadeBean implements ProcesoFacade {

	@EJB
	private ProcesoDAO objProcesoDao;

	@Override
	public Proceso buscarProcesoToDetalle(int codigo) {
		return objProcesoDao.buscarProcesoToDetalle(codigo);
	}

	@Override
	public List<DetalleProcesoRequisitos> listarDetalleRequisitoProceso(
			int codigo) throws Exception {
		return objProcesoDao.listarDetalleRequisitoProceso(codigo);
	}

	@Override
	public String registrarFlujoYProceso(Proceso miproceso,
			List<FlujoProceso> lstFlujoProcesos,
			List<Requisitos> listaRequisitos,
			ApeRecProceso apelacionReconsideracionProceso, Usuario objUsuario) {
		return objProcesoDao.registrarFlujoYProceso(miproceso,
				lstFlujoProcesos, listaRequisitos,
				apelacionReconsideracionProceso, objUsuario);
	}

	@Override
	public List<FlujoProceso> listarlosFlujosparaActualizar(int intProceso) {
		return objProcesoDao.listarlosFlujosparaActualizar(intProceso);
	}

	@Override
	public String EliminarFlujoYProceso(int idProceso) {
		return objProcesoDao.EliminarFlujoYProceso(idProceso);
	}

	@Override
	public List<ProcesoDTO> listarProcesosMantenimiento() {
		return objProcesoDao.listarProcesosMantenimiento();
	}

	@Override
	public List<HistorialExpedientesDTO> listasProcesosHistorialRutaExpediente(
			Persona objPersona) {
		return objProcesoDao.listasProcesosHistorialRutaExpediente(objPersona);
	}

	@Override
	public String primerlistado(int idExpediente, int idUsuarioEncargadoArea) {
		return objProcesoDao
				.primerlistado(idExpediente, idUsuarioEncargadoArea);
	}

	@Override
	public List<HojaRutaDTO> segundolistado(int idExpediente) {
		return objProcesoDao.segundolistado(idExpediente);
	}

	@Override
	public String modificarFlujoYProceso(Proceso miproceso,
			List<AreaDTO> listaFlujoProcesos, Usuario objUsuario,
			List<Requisitos> listaRequisitos) {
		return objProcesoDao.modificarFlujoYProceso(miproceso,
				listaFlujoProcesos, objUsuario, listaRequisitos);
	}

	@Override
	public List<AreaDTO> listarEncargado() {
		return objProcesoDao.listarEncargado();
	}

	@Override
	public Proceso buscarProcesoToDetalleSinUit(int codigo) {
		return objProcesoDao.buscarProcesoToDetalleSinUit(codigo);
	}

	@Override
	public List<Requisitos> listaRequisitosDetalleActualizar(int intProceso) {
		return objProcesoDao.listaRequisitosDetalleActualizar(intProceso);
	}

	@Override
	public List<Area> listarAreas() {
		return objProcesoDao.listarAreas();
	}

	@Override
	public List<Proceso> listarTodosProcesos(String proceso, int area) {
		return objProcesoDao.listarTodosProcesos(proceso, area);
	}

	@Override
	public List<RequisitoProcesosDTO> listaRequisitosFaltantes(int idExpediente) {
		return objProcesoDao.listaRequisitosFaltantes(idExpediente);
	}

	@Override
	public List<Object> buscarProceso(int codProcedimiento) {
		return objProcesoDao.buscarProceso(codProcedimiento);
	}

	@Override
	public Usuario validarUsuariosTecnicos(int idArea) {
		return objProcesoDao.validarUsuariosTecnicos(idArea);
	}

	@Override
	public Usuario validarUsuarioSupervisor(int idArea) {
		return objProcesoDao.validarUsuarioSupervisor(idArea);
	}

	@Override
	public String validarNombreProceso(String s) {
		return objProcesoDao.validarNombreProceso(s);
	}

	@Override
	public String guardarPaso1(Proceso miproceso, Usuario objUsuario) {
		return objProcesoDao.guardarPaso1(miproceso, objUsuario);
	}

	@Override
	public String guardarPaso2(Proceso miproceso,
			List<FlujoProceso> lstFlujoProcesos, Usuario objUsuario) {
		return objProcesoDao.guardarPaso2(miproceso, lstFlujoProcesos,
				objUsuario);
	}

	@Override
	public String guardarPaso3(Proceso miproceso,
			List<FlujoProceso> lstFlujoProcesos,
			List<Requisitos> listaRequisitos, Usuario objUsuario) {
		return objProcesoDao.guardarPaso3(miproceso, lstFlujoProcesos,
				listaRequisitos, objUsuario);
	}

	@Override
	public String guardarPaso4(Proceso miproceso,
			List<FlujoProceso> lstFlujoProcesos,
			List<Requisitos> listaRequisitos,
			ApeRecProceso apelacionReconsideracionProceso, Usuario objUsuario) {
		return objProcesoDao.guardarPaso4(miproceso, lstFlujoProcesos,
				listaRequisitos, apelacionReconsideracionProceso, objUsuario);
	}

	@Override
	public Proceso buscarServicio(int idServicio) {
		return objProcesoDao.buscarServicio(idServicio);
	}

	@Override
	public List<FlujoProceso> buscarLstFlujoProcesoServicio(int idServicio) {
		return objProcesoDao.buscarLstFlujoProcesoServicio(idServicio);
	}

	@Override
	public List<Requisitos> buscarLstRequisitosServicio(int idServicio) {
		return objProcesoDao.buscarLstRequisitosServicio(idServicio);
	}

	@Override
	public ApeRecProceso buscarApeRecServicio(int idServicio) {
		return objProcesoDao.buscarApeRecServicio(idServicio);
	}

	@Override
	public String habilitarServicio(int idServicio) {
		return objProcesoDao.habilitarServicio(idServicio);
	}

	@Override
	public String update(Proceso miproceso,
			List<FlujoProceso> lstFlujoProcesos,
			List<Requisitos> listaRequisitos,
			ApeRecProceso apelacionReconsideracionProceso, Usuario objUsuario) {
		return objProcesoDao.update(miproceso, lstFlujoProcesos,
				listaRequisitos, apelacionReconsideracionProceso, objUsuario);
	}

}
